package provatable;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the EVENTO database table.
 * 
 */
@Entity
@NamedQuery(name="Evento.findAll", query="SELECT e FROM Evento e")
public class Evento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	private long oid;

	@Temporal(TemporalType.DATE)
	@Column(name="\"DATA\"")
	private Date data;

	private String luogo;

	private String nome;

	private Timestamp orariofine;

	private Timestamp orarioinizio;

	private double prezzo;

	//bi-directional many-to-one association to TipologiaEvento
	@ManyToOne
	@JoinColumn(name="TIPOLOGIA_EVENTO_OID")
	private TipologiaEvento tipologiaEvento;

	//bi-directional many-to-many association to Gruppo
	@ManyToMany(mappedBy="eventos")
	private List<Gruppo> gruppos;

	//bi-directional many-to-one association to Tour
	@OneToMany(mappedBy="evento")
	private List<Tour> tours;

	public Evento() {
	}

	public long getOid() {
		return this.oid;
	}

	public void setOid(long oid) {
		this.oid = oid;
	}

	public Date getData() {
		return this.data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public String getLuogo() {
		return this.luogo;
	}

	public void setLuogo(String luogo) {
		this.luogo = luogo;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Timestamp getOrariofine() {
		return this.orariofine;
	}

	public void setOrariofine(Timestamp orariofine) {
		this.orariofine = orariofine;
	}

	public Timestamp getOrarioinizio() {
		return this.orarioinizio;
	}

	public void setOrarioinizio(Timestamp orarioinizio) {
		this.orarioinizio = orarioinizio;
	}

	public double getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(double prezzo) {
		this.prezzo = prezzo;
	}

	public TipologiaEvento getTipologiaEvento() {
		return this.tipologiaEvento;
	}

	public void setTipologiaEvento(TipologiaEvento tipologiaEvento) {
		this.tipologiaEvento = tipologiaEvento;
	}

	public List<Gruppo> getGruppos() {
		return this.gruppos;
	}

	public void setGruppos(List<Gruppo> gruppos) {
		this.gruppos = gruppos;
	}

	public List<Tour> getTours() {
		return this.tours;
	}

	public void setTours(List<Tour> tours) {
		this.tours = tours;
	}

	public Tour addTour(Tour tour) {
		getTours().add(tour);
		tour.setEvento(this);

		return tour;
	}

	public Tour removeTour(Tour tour) {
		getTours().remove(tour);
		tour.setEvento(null);

		return tour;
	}

}